nn Torch (học máy)

Gói nn được sử dụng để xây dựng các mạng neuron. Nó được chia thành các đối tượng module dùng chung một Module giao diện chung. Các module có phương thức forward()backward() cho phép chúng truyền thẳng (feedforward)truyền ngược (backpropagate) tương ứng. Các module có thể được nối với nhau bằng cách sử dụng module hợp tử, như Sequential, ParallelConcat để tạo các biểu đồ phức tạp phù hợp. Các module đơn giản như Linear, TanhMax tạo thành các module có các thành phần cơ bản. Giao diện module này cung cấp phép vi phân gradient tự động. Sau đây là một ví dụ về trường hợp sử dụng để xây dựng một tri giác đa lớp (MLP) bằng cách sử dụng module:

> mlp = nn.Sequential()> mlp:add( nn.Linear(10, 25) ) -- 10 input, 25 unit ẩn> mlp:add( nn.Tanh() ) -- một số hàm truyền tiếp tuyến hyperbol> mlp:add( nn.Linear(25, 1) ) -- 1 output> =mlp:forward(torch.randn(10))-0.1815[torch.Tensor of dimension 1]

Các hàm mất mát được thực thi như các lớp con của Criterion, có giao diện tương tự như Module. Nó cũng có phương thức forward()backward() để tính toán gradient mất mát và truyền ngược. Hữu ích để đào tạo mạng neuron đối với các yêu cầu không cao cấp. Các mất mát thường được tính qua Sai số toàn phương trung bình (MSE) thực thi trong MSECriterionentropy chéo thực thi trong ClassNLLCriterion. Dưới đây là một ví dụ về hàm Lua gọi ra để huấn luyện một module mlp khi input tensor x, tensor mục tiêu y với một biến vô hướng learningRate:

function gradUpdate(mlp, x, y, learningRate)  local criterion = nn.ClassNLLCriterion()  pred = mlp:forward(x)  local err = criterion:forward(pred, y);   mlp:zeroGradParameters();  local t = criterion:backward(pred, y);  mlp:backward(x, t);  mlp:updateParameters(learningRate);end

Ngoài ra, nó cũng có lớp StochasticGradient để đào tạo một mạng neuron bằng cách sử dụng thuật Giảm gradient ngẫu nhiên, mặc dù gói optim cung cấp nhiều lựa chọn hơn, như động lượng và phân rã trọng lượng chính quy hóa.